%!TEX program = xelatex
% 使用beamer文档类
\documentclass{beamer}
% 使用中文环境
\usepackage[UTF8,noindent]{ctexcap}
% 可插入jpg图片
\usepackage{graphicx}
\usepackage{listings}
\setbeamertemplate{navigation symbols}{}   %% 去掉页面下方默认的导航条.

% 设置演示文档信息
\title{PHP网站开发}
\subtitle{CodeIgnite框架介绍}
\institute{西北民族大学}
\author{杨志宏}
\date{\today}

% 设置slide主题及配色方案
\usetheme{Szeged}
\usecolortheme{seagull}

\begin{document}

\begin{frame}
\titlepage
\end{frame}

\begin{frame}[t,shrink]\frametitle{目录}
\tableofcontents
\end{frame}

\section{CodeIgnite框架简介}
\subsection{框架介绍}

\begin{frame}[t]
\frametitle{CodeIgnite框架特点}
\framesubtitle{优势}
\begin{itemize}
	\item 轻量，按需载入模块
	\item 易学，文档齐全，社区活跃
	\item 灵活，可扩展性强
\end{itemize}
\end{frame}

\begin{frame}[t]
\frametitle{CodeIgnite框架特点}
\framesubtitle{劣势}
\begin{itemize}
	\item 对PHP新版本特性支持不足
\end{itemize}
\end{frame}

\begin{frame}[t]
\frametitle{CodeIgnite工作流程}
\begin{figure}[htbp]
	\centering
	\includegraphics[width=110mm]{../raw/appflowchart.jpg}
	\caption{CodeIgnite流程图}
	\label{fig:appflow}
\end{figure}
\end{frame}

\section{下载及安装}
\subsection{下载}
\begin{frame}[t]
\frametitle{CodeIgnite框架下载}
可从\href{http://codeigniter.org.cn/user_guide/installation/downloads.html}{官方中文站点}下载最新版。截至目前，其最新版本为CodeIgniter V 2.2.0。

或者，我们还可以从\href{http://www.github.com}{Github站点}\footnote{Github网站是一个社交化代码托管网站，目前拥有用户600多万，在该网站，你可以非常方便的和朋友、同事、同学甚至陌生人分享代码或者共同维护代码。}下载。
\end{frame}

\subsection{安装}
\begin{frame}[t]
\frametitle{CodeIgnite框架安装}
\begin{enumerate}
	\item 解压缩安装包。
	\item 把 CodeIgniter 文件夹和里面的文件上传到你的服务器。如果是本地环境，直接解压到Web服务器的文档根目录，例如c:/wamp/www/。
\end{enumerate}
\end{frame}

\section{基本概念}
\subsection{URL分段及含义}
\begin{frame}[t]
\frametitle{URL分段及含义}
	\begin{block}{URL分段表示}
	example.com/index.php/class/function/ID
	\end{block}

根据模型-视图-控制器模式，此 URL 段(在index.php之后）表示：

\begin{enumerate}
	\item 第一段表示调用控制器类。
	\item 第二段表示调用类中的函数或方法。
	\item 第三及更多的段表示的是传递给控制器的参数，如 ID 或其它各种变量。
\end{enumerate}
\end{frame}

\subsection{控制器}
\begin{frame}[t]{控制器}
\begin{itemize}
	\item 类名首字母大写，文件名小写并默认保存位置在application/controllers/。
	\item 继承 CI\_Controller 类。
	\item 默认方法为index方法。
\end{itemize}
\end{frame}

\subsection{视图}
\begin{frame}[t]{视图}
\begin{itemize}
	\item 默认保存位置在application/views/。
	\item 使用原生HTML和PHP语法，无需专门模板。
	\item 在控制器中通过数组传递变量。
\end{itemize}
\end{frame}

\subsubsection{引用视图}
\begin{frame}[t]{引用视图}
\begin{block}{引用视图}
	\$this->load->view('Helloview');
\end{block}
\begin{block}{引用视图并传递变量}
	\$this->load->view('loopview', \$data );
\end{block}
\end{frame}

\begin{frame}[fragile]
\frametitle{在视图中循环输出多维数组}
\begin{verbatim}
<?php foreach ( $userlist as $k => $v ) :?>
<tr>
<td><?php echo $v[’id’] ?></td>
<td><?php echo $v[’name’] ?></td>
<td><?php echo $v[’email’] ?></td>
</tr>
<?php endforeach; ?>
\end{verbatim}
\end{frame}

\subsection{模型}
\begin{frame}[t]{模型}
\begin{itemize}
	\item 默认保存位置在application/models/。
	\item 类名首字母大写，文件名小写。
	\item 继承 CI\_Model 类。
\end{itemize}
\end{frame}

\begin{frame}[t,fragile]{在控制器中载入模型}
\begin{verbatim}
// 载入模型
$this->load->model( ’mvc_model’ );
// 取得模型数据
$data[’hello’] = $this->mvc_model->sayhello();
\end{verbatim}
\end{frame}

\section{辅助函数}

\subsection{辅助函数}

\begin{frame}[t]{辅助函数}
\begin{itemize}
	\item 辅助函数不是用类的方式来实现的。它们仅仅是一些简单的过程处理函数。每个辅助函数处理一个特定的任务，并且不必依靠其他函数。
	\item 想用辅助函数，就必须先载入它。一旦被载入，辅助函数将全局可用。
\end{itemize}
\end{frame}

\begin{frame}[t,fragile]\frametitle{载入辅助函数}
   我们通常在控制器中载入辅助函数：
\begin{verbatim}
	$this->load->helper(’url’);
\end{verbatim}
\end{frame}

\subsection{URL辅助函数}

\begin{frame}[t,fragile]\frametitle{site\_url辅助函数}
   生成指定的URL，该URL为完整地址（包含前缀、后缀），该函数常用来生成页面链接：
\begin{verbatim}
	echo site_url(”news/local/123”);
\end{verbatim}
\end{frame}

\begin{frame}[t,fragile]\frametitle{base\_url辅助函数}
   生成指定的URL，该函数常用来指定外部文件地址：
\begin{verbatim}
	echo base_url(”news/local/123”);
\end{verbatim}
\end{frame}

\subsection{自定义辅助函数}
\begin{frame}[t]\frametitle{自定义辅助函数}
 \begin{itemize}
	\item 保存在application/helpers目录
	\item 文件名为XX\_helper.php
\end{itemize}
\end{frame}

\end{document}


